#include "message_senders.h"


int send_user_up_msg(fd_set fds, char* nick)
{                               
	int m_size = sizeof("user_up") + strlen(nick) + 3;
	char* msg = malloc(m_size);
	
	bzero(msg,m_size);
	strcat(msg,"user_up\n");
	strcat(msg,nick);
	strcat(msg,"\n\n");    

	int k, max;
	max = connections_max_fd(); 
	for(k = 0; k <= max; k++) {                  
		if (FD_ISSET(k, &fds)) {                        
			send(k,msg,m_size,0);
		}
	}	    		
                                    
	free(msg);
}

int send_new_msg_msg(fd_set fds, char *who, char *message, int msg_len)
{
	char number[20];
	bzero(number,sizeof(number));
	sprintf(number,"%d",msg_len);
		
	int m_size = sizeof("new_msg") + strlen(who) + strlen(number) + msg_len + 4;
	char* msg = malloc(m_size);
	bzero(msg,m_size);

	bzero(msg,m_size);
	strcat(msg,"new_msg\n");
	strcat(msg,who);
	strcat(msg,"\n");
	strcat(msg,number);
	strcat(msg,"\n");
	strncat(msg,message,msg_len);
	strcat(msg,"\n\n");

	int k, max;
	max = connections_max_fd(); 
	for(k = 0; k <= max; k++) {
		if (FD_ISSET(k, &fds))
			send(k,msg,m_size,0);
	}	

	free(msg); 
}


int send_user_down_msg(fd_set fds, char* nick)
{
	int m_size = sizeof("user_down") + strlen(nick) + 3;
	char* msg = malloc(m_size);
	
	bzero(msg,m_size);
	strcat(msg,"user_down\n");
	strcat(msg,nick);
	strcat(msg,"\n\n");
	
	int k, max;
	max = connections_max_fd(); 
	for(k = 0; k <= max; k++) {
		if (FD_ISSET(k, &fds))
			send(k,msg,m_size,0);
	}	
   	
	free(msg); 
}


int send_login_ok_msg(int fd) 
{
	int s = room_size_bytes();
	char *msg = malloc(strlen("login_ok\n") + s + 2);
	char *ulist = malloc(s);    
	bzero(msg,strlen("login_ok\n") + s + 2);
	bzero(ulist,s);  
	
	strcat(msg,"login_ok\n");
	list_users(ulist);
	strncat(msg,ulist,s);
	strcat(msg,"\n");
	send(fd,msg,strlen(msg),0);
	free(msg);
	//free(ulist);
}

int send_login_error_msg(int fd, int err_code) 
{
	char *msg = malloc(strlen("login_error\n") + 4);
	bzero(msg,strlen("login_error\n") + 4);
	
	strcat(msg,"login_error\n");
	if (err_code == 1)	
		strcat(msg,"1");
	else if  (err_code == 2)
		strcat(msg,"2");	
	strcat(msg,"\n\n");
	send(fd,msg,strlen(msg),0);
	free(msg);
}

int send_unexpected_msg(int fd) 
{
	char *msg = "unexpected_command\n\n";
	send(fd,msg,strlen(msg),0);
	//free(msg);
}

int send_unknown_msg(int fd) 
{
	char *msg = "unknown_command\n\n";
	send(fd,msg,strlen(msg),0);
	//free(msg);  
}

int send_ill_formed_msg(int fd) 
{
	char *msg = "ill_formed_command\n\n";
	send(fd,msg,strlen(msg),0);
	//free(msg);  
}








